package com.tedu.api.thread;

/**
 * 线程的生命周期【线程模型】
 * 1.新建状态【New】线程被创建之后，处于新建状态
 *  SimpleThread st=new SimpleThread();//1.新建状态【线程出生】
 * 2.就绪状态【Runnable】 新建的线程，调用start方法，线程进入就绪状态
 * 调用start()后线程等待被调度
 * 3.运行状态【Running】新建的线程，执行run方法进入运行状态
 * 当前小县城获得CPU时间片，执行run方法，输出run方法中内容
 * 4.阻塞状态【Dead】停止的状态，停止一秒
 * 5.终止状态。正常 异常 【死亡状态】
 * 执行run方法最后，进入终止状态
 * 案例：线程一生
 */
public class ThreadStateDemo {
    public static void main(String[] args) {
        System.out.println("主线程处于新建状态");  //0-开始

        SimpleThread st=new SimpleThread();//1.新建状态【线程出生】
        System.out.println(st.getName()+"现在处于新建状态");

        st.start();//2.线程的就绪状态
        System.out.println(st.getName()+"在调用start后处于就绪状态");
    }
}
//创建SimpleThread实现Thread类
class SimpleThread extends Thread{
    //3.运行状态
    public void run(){
        System.out.println(Thread.currentThread().getName()+"" +
              "处于运行状态");
        try {
            Thread.sleep(1000);//4.阻塞状态
        } catch (InterruptedException e) {
            e.printStackTrace();
            System.out.println(Thread.currentThread().getName()+"线程阻塞");
        }
        //5.线程的终止
        System.out.println(Thread.currentThread().getName()+"线程终止");
    }
}